package com.itrencai.d21_dom4j;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import javax.xml.parsers.SAXParser;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;

/**
 * 使用dom4j解析xml文件中的数据
 * 1.导入dom4j框架
 * 2.准备一个xml文件
 */


public class Dom4JHelloWorldDemo1 {
    @Test
    public  void parseXMLData() throws Exception {
        //1.创建一个dom4j的解析器对象，代表了整个dom4j框架
        SAXReader saxReader=new SAXReader();
        //2.把xml文件加载到内存中成为一个文档对象
            Document document =saxReader.read(new File("E:\\javalearn\\opp-app\\oop-app\\src\\com\\itrencai\\d21_dom4j\\Contacts.xml"));
            //这样写是直接在src下去寸照文件了
        //InputStream is=Dom4JHelloWorldDemo1.class.getResourceAsStream("/Contacts.xml");
       // Document document=saxReader.read(is);

        //3.获取根元素对象
        Element root =document.getRootElement();
        System.out.println(root.getName());

        //4.拿根元素下的全部子元素对象(一级)
        List<Element> sonEles=root.elements("contract");//只拿contract
        for (Element sonEle : sonEles) {
            System.out.println(sonEle.getName());
        }
        //拿某个子元素
        Element userEle=root.element("user");
        System.out.println(userEle.getName());
        Element contract=root.element("contract");//默认提取第一个元素对象
        System.out.println(contract.elementText("name"));//获取子元素文本
        //去掉前后空格
        System.out.println(contract.elementTextTrim("name"));

        //根据元素获取属性值
//        Attribute attribute=contract.attribute("id");
//        System.out.println(idAttr.getName()+"-->"+idAttr.getValue());
//
        //直接提取属性值
//        System.out.println(contract.addAttribute("id"));
//        System.out.println(contract.addAttribute("vip"));

        //获取当前元素下子元素的对象
        Element email=  contract.element("email");
        System.out.println(email.getText());

    }


}
